package com.ww.springboot.boot.algorithm.leetcode2;

import org.apache.poi.ss.formula.functions.T;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 描述：
 *
 * @author 🧑 ‍wanwei
 * @since 2025-06-20 10:36
 */
public class B3443K次修改后的最大曼哈顿距离 {

    public static void main(String[] args) {
        String s = "NWSE";
        int k = 1;
        System.out.println(new B3443K次修改后的最大曼哈顿距离().maxDistance(s, k));
    }

    /**
     * <p>
     *
     *
     *
     *
     * @param s
     * @param k
     * @return
     */
    public int maxDistance(String s, int k) {
        //记录每个坐标 前面的操作
        Map<Integer, List<Integer>> map = new HashMap<>();
        //记录每个坐标的最大距离 key是距离 value是index
        Map<Integer, List<Integer>> map2 = new HashMap<>();
        //记录有利的方向
        Map<Integer, List<Integer>> map3 = new HashMap<>();
        int x = 0, y = 0;
        List<Integer> times = new ArrayList<>();
        times.add(0);
        times.add(0);
        times.add(0);
        times.add(0);
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            List<Integer> list = map.get(i);
            switch (c) {
                case 'N':
                    list.set(0, list.get(0) + 1);
                    y++;
                    break;
                case 'E':
                    list.set(1, list.get(1) + 1);
                    x++;
                    break;
                case 'W':
                    list.set(2, list.get(2) + 1);
                    x--;
                    break;
                case 'S':
                    list.set(3, list.get(3) + 1);
                    y--;
                    break;
            }
            map.put(i, list);
            int w = Math.abs(x) + Math.abs(y);
            List<Integer> list1 = map2.get(w);
            if (list1 == null) {
                list1 = new ArrayList<>();
            }
            list1.add(i);
            map2.put(w, list1);
            List<Integer> list3 = new ArrayList<>();
            if (x > 0) {
                list3.add(1);
            } else if (x == 0) {
                list3.add(1);
                list3.add(2);
            } else {
                list3.add(2);
            }

            if (y > 0) {
                list3.add(0);
            } else if (y == 0) {
                list3.add(0);
                list3.add(3);
            } else {
                list3.add(3);
            }
            map3.put(i, list3);
        }
        List<Integer> list = new ArrayList(map2.keySet());
        Collections.sort(list);


        return 0;
    }
}
